﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using FacebookApp;
using System.IO;
using System.Drawing.Drawing2D;
using System.Text;
using System.Xml;

public partial class Pages_Contact : System.Web.UI.Page
{
    int rrandom = 0;
    int grandom = 0;
    int brandom = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            //List<string> info = GetUserInfo.GetAll(Master.API.uid.ToString());
            //if (info.Count > 0)
            //{
            //    txtName.Text = info[1];
            //    txtEmail.Text = info[0];
            //}

            StringReader data = new StringReader(Master.API.fql.query("SELECT name,email FROM user WHERE uid = " + Master.API.uid.ToString()));

            XmlTextReader reader = new XmlTextReader(data);
            XmlDocument doc = new XmlDocument();
            doc.Load(reader);
            XmlNode node;

            node = doc.GetElementsByTagName("name").Item(0);
            if (node.HasChildNodes)
                txtName.Text = node.FirstChild.Value;
            node = doc.GetElementsByTagName("email").Item(0);
            if (node.HasChildNodes)
                txtEmail.Text = node.FirstChild.Value;

            DeleteImages();
            //CreateCaptcha();
            txtName.Focus();
        }
    }
    //public void CreateCaptcha()
    //{
    //    const string chars = "0123456789";
    //    var strCaptcha = new StringBuilder();
    //    var rand = new Random();
    //    for (int i = 0; i < 5; i++)
    //    {
    //        string str = chars[rand.Next(chars.Length)].ToString();
    //        strCaptcha.Append(str);
    //    }
    //    // Lưu captcha vào session
    //    lblCaptcha.Text = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" + strCaptcha;
    //    Session["captcha"] = strCaptcha.ToString();
    //}

    private void DeleteImages()
    {
        DirectoryInfo dr = new DirectoryInfo(Server.MapPath("~/Data/App/Captcha/"));
        foreach (FileInfo f in dr.GetFiles())
        {
            f.Delete();
        }
        captchaImage.ImageUrl = CreateCaptcha();
    }

    public string CreateCaptcha()
    {
        const byte LENGTH = 5;
        // chiều dài chuỗi để lấy các kí tự sẽ sử dụng cho captcha
        const string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        using (Bitmap bmp = new Bitmap(120, 35))
        {
            using (Graphics g = Graphics.FromImage(bmp))
            {
                // Tạo nền cho ảnh dạng sóng
                HatchBrush brush = new HatchBrush(HatchStyle.Percent80, Color.White, Color.Tan);
                g.FillRegion(brush, g.Clip);
                // Lưu chuỗi captcha trong quá trình tạo
                StringBuilder strCaptcha = new StringBuilder();
                Random rand = new Random();
                float locationX = 3;
                for (int i = 0; i < LENGTH; i++)
                {
                    // Lấy kí tự ngẫu nhiên từ mảng chars
                    SolidBrush brushes = new SolidBrush(GetRandomColor());
                    string str = chars[rand.Next(chars.Length)].ToString();
                    strCaptcha.Append(str);
                    // Tạo font với tên font ngẫu nhiên chọn từ mảng fonts
                    Font font = new Font("Times New Roman", new Random().Next(14, 17), FontStyle.Bold);
                    // Lấy kích thước của kí tự
                    SizeF size = g.MeasureString(str, font);
                    // Vẽ kí tự đó ra ảnh tại vị trí tăng dần theo i, vị trí top ngẫu nhiên
                    g.DrawString(str, font, brushes, locationX, rand.Next(2, 10));
                    font.Dispose();
                    //định location X
                    locationX += size.Width + i;
                }
                // Lưu captcha vào session
                Session["captcha"] = strCaptcha.ToString();
                // Ghi ảnh trực tiếp ra luồng xuất theo định dạng gif
                //Response.ContentType = "image/GIF";4
                int numRandom = new Random().Next(1, 3000);
                string imgFile = "captcha" + numRandom + ".jpg";
                string directoryCaptcha = "~/Data/App/Captcha/";
                // Kiểm tra thư mục đã tồn tại
                if (!Directory.Exists(Server.MapPath(directoryCaptcha)))
                {
                    Directory.CreateDirectory(Server.MapPath(directoryCaptcha));
                }
                //lấy thông tin thư mục
                DirectoryInfo direcInfo = new DirectoryInfo(Server.MapPath(directoryCaptcha));
                foreach (FileInfo file in direcInfo.GetFiles(".jpg"))
                {
                    try
                    {
                        //Xóa tất cả các tập tin hình trong thư mục hiện tại
                        file.Delete();
                    }
                    catch { }
                }
                bmp.Save(Server.MapPath(directoryCaptcha + imgFile));
                return directoryCaptcha + imgFile;
            }
        }
    }

    private Color GetRandomColor()
    {
        Random rnd = new Random();
        int ri = rnd.Next(255);
        if (ri == rrandom)
        {
            ri = rnd.Next(255);
        }
        else
        {
            rrandom = ri;
        }
        int gi = rnd.Next(255);
        if (gi == grandom)
        {
            gi = rnd.Next(255);
        }
        else
        {
            grandom = gi;
        }
        int bi = rnd.Next(255);
        if (bi == brandom)
        {
            bi = rnd.Next(255);
        }
        else
        {
            brandom = bi;
        }
        byte r = Convert.ToByte(ri);
        byte g = Convert.ToByte(gi);
        byte b = Convert.ToByte(bi);
        return Color.FromArgb(r, g, b);
    }

    protected void btnGui_Click(object sender, EventArgs e)
    {

        #region[Testinput]
        if (txtEmail.Text == "")
        {
            WebMsgBox.Show("Vui lòng để lại địa chỉ Email!");
            txtEmail.Focus();
            return;
        }

        if (txtDetail.Text == "")
        {
            WebMsgBox.Show("Vui lòng nhập nội dung!");
            txtDetail.Focus();
            return;
        }
        if (txtCaptcha.Text != Session["captcha"].ToString())
        {
            WebMsgBox.Show("Sai mã bảo vệ!");
            CreateCaptcha();
            txtCaptcha.Focus();
            return;
        }
        #endregion

        ContactInfo obj = new ContactInfo();
        obj.Name = txtName.Text;
        obj.Phone = txtPhone.Text;
        obj.Mail = txtEmail.Text;
        obj.Address = txtAddress.Text;
        obj.Detail = txtDetail.Text;
        obj.Company = txtCompany.Text;
        obj.Status = "False";
        obj.Date = DateTimeClass.ConvertDate(DateTime.Now, "MM/dd/yyyy");
        ContactService.Contact_Insert(obj);
        Form.Visible = false;
        Comfirm.Visible = true;
    }

    protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        DeleteImages();
    }
}